/**
 * 用户数据的处理
 */
const path = require("path")
const fs = require("fs")
// 获取数据库数据的方法
const reqSqlData = require('../db/handler_sql')


// 获取用户信息接口
function getUserInfo(req, res) {
  let sqlStr = `select * from ev_users where id = ?`
  reqSqlData(sqlStr, req.user.id).then(result => {
    if (result.length === 1) {
      res.cc(1, '用户信息获取成功', result)
    } else {
      res.cc(0, '用户信息获取失败')
    }
  }).catch(err => {
    res.cc(0, err.message || '用户信息获取失败')
  })
}

// 更新用户信息
function updateUserInfo(req, res) {
  let sqlStr = `update ev_users set ? where id=?`;
  reqSqlData(sqlStr, [req.body, req.user.id]).then(result => {
    if (result !== 1) return res.cc(0, '更新用户数据失败')
    let sqlStr = `select * from ev_users where id = ?`
    return reqSqlData(sqlStr, req.user.id)
  }).then(resultz => {
    if (resultz.length !== 1) return res.cc(0, '数据获取失败')
    res.cc(1, '用户数据修改成功', {
      status: 1,
      resultz
    })
  }).catch(err => {
    return res.cc(0, err.message || '更新失败')
  })
}

//仅用于测试 get测试接口获取所有数据
function getAllUserInfo(req,res){
  let sqlStr = `select * from ev_users`
  reqSqlData(sqlStr).then(result=>{
    if(result.length>0) return res.cc(1,'用户信息获取成功',result)
    res.cc(0,'用户信息获取失败')
  }).catch(err=>{
    res.cc(0,err.message||'获取失败')
  })
}

// 上传图片接口（单张图片）,仅存在本地
function uploadImage(req,res){
  let imgFile = req.file; // 获取文件上传资源信息
  let tmp = imgFile.path;// 获取临时资源路径：/upload/xxxxx
  let ext = path.extname(imgFile.originalname); // 获取用户上传图片的后缀名
  let newName = '' + Date.now() + Math.round(Math.random() * 10000) + ext; // 给上传的文件重命名，防止重名
  let newPath = './public/images/' + newName;// 给图片设置存放目录。提前给当前文件夹下建立一个images文件件夹
  let fileData = fs.readFileSync(tmp); // 将上传到服务器的临时资源读取到  一个变量里面
  fs.writeFileSync(path.join(__dirname,'../', newPath), fileData); // 重新书写图片文件   写入到指定的文件夹下
  fs.unlinkSync(tmp) // 删除临时资源
  res.cc(1,'写入图片成功',imgFile)
}

module.exports = {
  getUserInfo,
  updateUserInfo,
  getAllUserInfo,
  uploadImage
}